<?
//simple server
require('lib/nusoap.php');

//创建一个新的soap_server对象，并注册允许远程调用的方法
$s=new soap_server;
$s->register('echoString');
$s->register('echoArray');
$s->register('adddata');
/*
[文章中说: 缺少了注册这一步，任何PHP函数都将可以进行远程调用，这将是一个极大的安全隐患。但是我尝试过注册是必须的。而且只有将结果return的函数才能直接声明为远程方法，比如echo()就不行，而strtolower()就可以。]
*/

function echoString($inputString) {
//类性检查
if(is_string($inputString)) {
return "Hello, ".$inputString;
} else {
//soap_fault类用于产生错误信息
return new soap_fault('client', '', 'The parameter to this service must be a string.');
//soap_fault(faultcode, faultactor, faultstring, faultdetail);
//上面是错误处理类的构造函数的格式
//faultcode 必须值。可以设置为client或server，来表明错误发生在哪一端。
//faultactor 在NuSOAP中尚未实现。
//faultstring 错误信息。
//faultdetail 详细错误信息。你可以使用XML标记。

//除了构造函数外，soap_fault类还有一个serialize()方法
//它将错误信息序列化，然后返回一个完整的SOAP报文，范例：
/*
$fault = new soap_fault('client', '', 'The inputString parameter must not be empty');
echo $fault->serialize();
*/
}
}

//演示数组类型的使用
function echoArray($inputString) {
$myFile = "log";
$fh = fopen($myFile,'a');
$stringData=count($inputString + '\n' );
fwrite($fh,$stringData);
fclose($fh);


return $inputString[0]."+".$inputString[1];

}

function adddata($inputInt)
{
	
	$i = (int)$inputInt[0] * (int) $inputInt[1];
	return array($i,count($inputInt),$inputInt);

}


//最后一步是把所有的收到的post数据都传递给SOAP server的service方法。它将处理请求，并调用相应的函数。
$s->service($HTTP_RAW_POST_DATA);


?>

